/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package admin.indicadores;

import DBMS.DataBaseManager;
import clases.Indicador;
import clases.IndicadorElementos;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author Gimbet
 */
public class ConsultarIndicador extends DispatchAction {

    /*
     * forward name="success" path=""
     */
    private static final String SUCCESS = "success";
    private static final String POPULATE ="populate";
    private static final String FAILURE = "failure";

   
    public ActionForward populate(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        DataBaseManager dbms = DataBaseManager.getInstance();
        ArrayList<Indicador> indicadores = dbms.consultarIndicadores();
        if (indicadores.isEmpty()){
            System.out.println("Esta vacio");
        }
        request.setAttribute("indicadores",indicadores);
        
        return mapping.findForward(POPULATE);
    }
    
    public ActionForward search(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        Indicador indicador = (Indicador) form;
        DataBaseManager dbms = DataBaseManager.getInstance();
        System.out.println("En el consultar el indicador es "+indicador.getIdIndicador());
        Indicador indi = dbms.consultarIndicador(indicador.getIdIndicador()); 

        
        if (indi == null){
            indicador.setMensaje("Su consulta no pudo ser realizada");
            request.setAttribute("Indicador",indicador);  
            return mapping.findForward(FAILURE);
        }
        //si voy bien, ahora buscare cargar los valores de las totalizaciones
        // para determinada fecha
        //Los indicadores, por ahora, tienen la estructura siguiente:
        // elementos (IndicadorElemento) que tiene un IndicadorTotalizacion, valor, operacion
        // por su parte IndicadorTotalizacion tiene totalizacion1, operacion, totalizacion 2.
        
     
        indicador.setElementos(new IndicadorElementos());
        request.setAttribute("Indicador",indi);
        
        request.setAttribute("anos", DataBaseManager.getFechas());
        
        return mapping.findForward(SUCCESS);
    }
    
     public ActionForward save(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        Indicador indicador = (Indicador) form;
        System.out.println("\tIndicador, nombre"+ indicador.getNombre());
        DataBaseManager dbms = DataBaseManager.getInstance();
        Indicador indi = dbms.consultarIndicador(indicador.getIdIndicador());
        if (indi == null){
            indicador.setMensaje("Error consultando en estas fechas");
            request.setAttribute("Indicador",indicador);
            return mapping.findForward(SUCCESS);
        }
        System.out.println("Los anos, trimestre, tipos" + indicador.getAno()+" "+indicador.getTrimestre()+" "+indicador.getTipo());
        IndicadorElementos ie = dbms.consultarIndicadorElementos(indicador, indicador.getAno(), indicador.getTrimestre(), indicador.getTipo());
        indicador.setElementos(ie);
        Double calculado = indicador.calcular();
        request.setAttribute("anos", DataBaseManager.getFechas());
        request.setAttribute("calculo",calculado);
         return mapping.findForward(SUCCESS);
     }
}